package sige

class LoginController {

    def index() { 
        redirect(action: "login", params: params)
    }
    
    def login = {
        [usuarioInstance: new Usuario(params)]
    }
    
    def logar = {
        def usuarioInstance = Usuario.findByLoginAndSenha(params.login , params.senha)
        
        if(!usuarioInstance){
            usuarioInstance = new Usuario()
            usuarioInstance.login = params.login
            redirect (action: 'login' , model: [usuarioInstance: usuarioInstance])
            flash.message = 'usuario.nao.encontrado.message'
            return 
        }
        
        if(!usuarioInstance?.ativo || usuarioInstance?.contaExpirada || usuarioInstance?.contaTrancada ){
            usuarioInstance.errors.reject(
                'usuario.sem.acesso.message',
                ['password', 'class Usuario'] as Object[],
                '[Property [{0}] of class [{1}] does not match confirmation]')
            return redirect (action: 'login', model: [usuarioInstance: usuarioInstance])
        }
        
        session.usuario = usuarioInstance
        session.grupo = Grupo.get(usuarioInstance.grupo.id)
        usuarioInstance.ultimoAcesso = new Date()
        usuarioInstance.save(flush: true)
        if(session.controlador){
            return forward (controller: session.controlador, action: session.acao, params: session.parametros)
           
        }
        redirect(controller: 'principal')
    }
    
    def deslogar = {
        session.usuario = null
        redirect(uri: '/')
    }
}
